package com.snack.shop.service;

import com.snack.shop.dto.LoginParam;
import com.snack.shop.dto.UserUpdateRequest;
import com.snack.shop.dto.WxLoginParam;
import com.snack.shop.dto.RegisterParam;
import com.snack.shop.entity.User;
import java.util.Map;

/**
 * 用户服务接口
 */
public interface UserService {

    /**
     * 用户登录
     */
    String login(LoginParam param);

    /**
     * 用户注册，成功后自动登录返回token
     */
    String register(RegisterParam param);

    /**
     * 根据ID获取用户信息
     */
    User getUserById(Long userId);

    /**
     * 根据手机号获取用户
     */
    User getUserByPhone(String phone);
    
    /**
     * 通过微信code获取openid并保存
     * @param code 微信登录code
     * @return openid
     */
    String getAndSaveOpenid(String code);

    /**
     * 更新用户资料
     */
    void updateProfile(Long userId, UserUpdateRequest request);

    /**
     * 微信一键登录
     */
    Map<String, Object> wxLogin(WxLoginParam param);
}
